package com.yuandian.management.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.management.vo.AgentStatusInfoPojo;
import com.yuandian.management.vo.AgentStatusInfoVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * agent状态
 * 
 * @author fucx
 * @date 2020/06/11
 */
@Mapper
public interface AgentStatusInfoMapper extends BaseMapper<AgentStatusInfoPojo> {

    /**
     * 查询当前10分钟这些ip是否有数据，有前端就不能删除 String tableName,String ips,Date startTime
     * 
     * @param map
     * @return
     */
    public List<AgentStatusInfoPojo> countTenMinuteInIps(Map map);

    /**
     * 保存agent状态信息
     * 
     * @param map
     * @return
     */
    int insertAgentStatusInfo(Map map);

    /**
     * 统计当天表里面该agent重启次数
     * 
     * @param map
     * @return
     */
    int countRebootNumByIp(Map map);

    /**
     * 批量插入到数据库
     * 
     * @param map
     * @return
     */
    int insertAgentStatusInfoBatch(Map map);

    /**
     * 前端删除agent的时候查询十分钟该agent是否有数据，有就不能逻辑删除
     * 
     * @param map
     * @return
     */
    List<AgentStatusInfoVo> countTenMinuteGroupByIp(Map map);

    /**
     * 统计断采个数、异常个数、正常个数
     * 
     * @param map
     * @return
     */
    List<AgentStatusInfoVo> countByAgentStatus(Map map);

    /**
     * 查询当天该表的信息，按ip分组统计，参数是状态
     * @param page
     * @param map
     * @return
     */
    public List<AgentStatusInfoVo> queryListGroupByIpAndStatus(Page<AgentStatusInfoVo> page,@Param("map")Map map);

    /**
     * 查询当天的信息，按ip和状态查询
     * @param page
     * @param map
     * @return
     */
    public List<AgentStatusInfoVo> queryListByIpAndAgentStatus(Page<AgentStatusInfoVo> page, @Param("map")Map map);

    /**
     * 查询断采top数据
     * 
     * @param map
     * @return
     */
    public List<AgentStatusInfoVo> getBreakTop(Map map);

    /**
     * 查询异常top数据
     * 
     * @param map
     * @return
     */
    public List<AgentStatusInfoVo> getWrongTop(Map map);

    /**
     * 前端操作，根据ip过滤掉当前的断采top排名
     * 
     * @param map
     * @return
     */
    public int updateCollectTopStatusByIp(Map map);

    /**
     * 前端操作，根据ip过滤掉当前的异常top排名
     * 
     * @param map
     *
     * @return
     */
    public int updateWrongTopStatusByIp(Map map);

    /**
     * 前端获取最新的一个agent详情
     * 
     * @param map
     * @return
     */
    public AgentStatusInfoVo getAgentDetail(Map map);

    /**
     * 前端获取最新的一个agent详情:根据时间获取历史表
     * 
     * @param map
     * @return
     */
    public AgentStatusInfoVo getAgentDetailByHistory(Map map);

    /**
     * 丢包率历史曲线图
     * 
     * @param map
     * @return
     */
    public List<AgentStatusInfoVo> lostHistoryLine(Map map);

    /**
     * 流量历史曲线图
     * 
     * @param map
     * @return
     */
    public List<AgentStatusInfoVo> speedHistoryLine(Map map);

    /**
     * 根据ip获取该ip历史启动时间
     * 
     * @param map
     * @return
     */
    public List<AgentStatusInfoVo> rebootHistoryTime(Map map);

    /**
     * 获取探针部署ip
     * 
     * @param moduleName
     * @return
     */
    public List<String> getModuleManagement(@Param("moduleName") String moduleName);



    public int queryTableExsit(String tableName);
}
